#include <stdio.h>
#include <stdlib.h>
#include <sys/ipc.h>
#include <sys/shm.h>

int main() {
    key_t key = ftok("shared_memory_key", 1234);  // 创建一个唯一的键值

    int shm_id = shmget(key, sizeof(int), IPC_CREAT | 0666);  // 创建共享内存段
    if (shm_id == -1) {
        perror("shmget");
        return 1;
    }

    int *shared_data = (int *)shmat(shm_id, NULL, 0);  // 连接共享内存
    if (shared_data == (int *)-1) {
        perror("shmat");
        return 1;
    }

    *shared_data = 42;  // 在共享内存中写入数据

    printf("Shared data: %d\n", *shared_data);

    shmdt(shared_data);  // 分离共享内存

    shmctl(shm_id, IPC_RMID, NULL);  // 删除共享内存段

    return 0;
}